---
title: ProcessOB3PRetention configuration
summary: Environment API settings, app.config surface, environment variables, and log destinations for ProcessOB3PRetention.
status: draft
owner: Documents
last_reviewed: 2026-10-22
---

# ProcessOB3PRetention configuration

Runtime configuration comes almost entirely from the Environment API, accessed through `IEnvironmentService.GetConfigSetting`. The `App.config` file carries only a WCF binding definition and one `appSettings` entry (`ApplicationHost`), which the framework reads.

## Environment API settings

| Key | Section / key | Read at | Behavior |
| --- | --- | --- | --- |
| `processob3pretention.processbatchsize` | Section `processob3pretention`, key `processbatchsize` | `ThirdPartyRetentionProcessor.cs` (`GetProcessBatchSize`) | Read only when claims exist. An empty, non-numeric, or non-positive value falls back to 100. A missing key throws `ApplicationException` (exit 5). See [BR-OB3P-002](business-rules.md#br-ob3p-002-batch-size-from-environment-setting-with-default-of-100). |
| `imagingapiurl` | Global key | `ImagingApiClient.cs` (constructor) | Base URL of the Imaging REST API. Missing throws `ApplicationException`; empty throws `UriFormatException` (exit 5). |
| `ProcessOB3PRetention.WSPEndPointUrl` | Section `processob3pretention`, key `wspendpointurl` | `OnBaseService.cs` (constructor) | Runtime address of the OnBase SOAP endpoint; overrides the address in `App.config`. |

`processob3pretention.processbatchsize` and `ProcessOB3PRetention.WSPEndPointUrl` are confirmed not secure (`secureFlag: false` in the seeded environment settings). The secure status of `imagingapiurl` is not confirmed, since it is not seeded in this repository.** There is no fallback to `appSettings`. `imagingapiurl` and `ProcessOB3PRetention.WSPEndPointUrl` are always required: they are read unconditionally when the service constructors run during application resolution. `processob3pretention.processbatchsize` is conditional: it is read only when the Imaging API returns at least one eligible claim (`retentionClaims.Length > 0`), so a missing key does not fail a run that finds no claims.

## Environment variance

`environmentSettings/settings.yml` is seeded to the Environment API for the prod, entqa, and npuat tracks. It defines `wspendpointurl` with one address per track and `processbatchsize` of 200 for each of the three tracks. The code fallback of 100 is separate from these seeded values: it applies only when the value is empty, non-integer, or not greater than zero, and a missing key throws `ApplicationException` from the framework rather than falling back. `imagingapiurl` is not seeded in this repository, so where it is maintained is unknown.** Other tracks have no seeded values.** Host names and URLs are intentionally not reproduced here.

## app.config

| Setting | Value | Notes |
| --- | --- | --- |
| `appSettings` `ApplicationHost` | `entqa` | Read by the framework; appears to be a developer-machine setting* |
| WCF binding `BasicHttpBinding_HylandOutBoundContract` | `basicHttpBinding`, `Transport` security | Client endpoint address is overridden at runtime by `ProcessOB3PRetention.WSPEndPointUrl` |

There are no `<connectionStrings>`, custom configuration sections, or binding redirects.

## Database connections

This application does not use a database. No connections are stored in `<connectionStrings>` and none are configured. Connection resolution through `IEnvironmentService` and `DbConnectionManager` is a framework capability that this application does not exercise.

## Environment variables

| Variable | Purpose |
| --- | --- |
| `EnvironmentApiUrl` | Machine-level location of the Environment API used to resolve the settings above |
| `OTEL_EXPORTER_OTLP_ENDPOINT` | Optional OpenTelemetry collector endpoint |
| `OTEL_EXPORTER_OTLP_PROTOCOL` | Optional OpenTelemetry protocol |
| `OTEL_EXPORTER_OTLP_HEADERS` | Optional OpenTelemetry headers |

## Log file destinations

The framework names five destinations through the environment variables `file0` to `file4`. This application never writes to them.

| Variable | Used by this application |
| --- | --- |
| `file0` | Not used |
| `file1` | Not used |
| `file2` | Not used |
| `file3` | Not used |
| `file4` | Not used |

Console output goes to stdout and stderr. Any persisted log is whatever the scheduler captures from those streams.*

## Related documentation

| Documentation | Description |
| --- | --- |
| [Index](index.md) | Documentation entry point |
| [Overview](overview.md) | Purpose and capabilities |
| [Architecture](architecture.md) | Components and composition root |
| [Run lifecycle](run-lifecycle.md) | Execution flow and exit codes |
| [Arguments](arguments.md) | Argument contract |
| [Dependencies](dependencies.md) | Packages and API dependencies |
| [Operations and processes](operations-processes.md) | Operation catalog |
| [Business rules](business-rules.md) | Rules enforced during processing |
| [Operational runbook](operational-runbook.md) | Run and recovery procedures |
| [Tech debt](tech-debt.md) | Technical debt observations |

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts. Statements marked with `**` could not be confirmed; treat
> as unknown until verified.

## Sources

- `ProcessOB3PRetention/App.config`
- `ProcessOB3PRetention/ThirdPartyRetentionProcessor.cs`
- `ProcessOB3PRetention/Services/ImagingApiClient.cs`
- `ProcessOB3PRetention/Services/OnBaseService.cs`
- `ProcessOB3PRetention/Program.cs`
- `environmentSettings/settings.yml`
